// mine/pages/renew/renew.js
Page({
  /**
   * 页面的初始数据
   */
  data: {
    contractDetail: {}, // 合同详情
    renewalPeriods: ['1年', '2年', '3年'], // 续约期限选项
    renewalPeriodIndex: 0, // 默认选择1年
    paymentCycles: ['月付', '季付', '半年付', '年付'], // 付款周期选项
    paymentCycleIndex: 0, // 默认选择月付
    newLeaseStartDate: '', // 新租期开始日期
    newLeaseEndDate: '', // 新租期结束日期
    newRentAmount: 0, // 新的月租金
    rentChangeRate: 0, // 租金变化率
    remark: '' // 备注信息
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    // 获取合同ID
    const contractId = options.contractId || '';
    
    // 模拟获取合同详情数据
    this.getContractDetail(contractId);
  },

  /**
   * 获取合同详情
   */
  getContractDetail(contractId) {
    // 这里应该是从API获取数据，这里使用模拟数据
    const contractDetail = {
      contractNumber: 'HT202508310001',
      houseAddress: '北京市朝阳区建国路88号智慧社区3号楼1单元101',
      leaseStartDate: '2025-01-01',
      leaseEndDate: '2025-12-31',
      actualRentAmount: 5000,
      paymentCycle: '月付',
      depositAmount: 10000
    };
    
    // 设置合同详情
    this.setData({
      contractDetail: contractDetail
    });
    
    // 计算新的租期
    this.calculateNewLeasePeriod();
    
    // 计算新的租金
    this.calculateNewRent();
  },

  /**
   * 计算新的租期
   */
  calculateNewLeasePeriod() {
    const { contractDetail, renewalPeriodIndex } = this.data;
    
    // 获取当前租约结束日期
    const currentEndDate = new Date(contractDetail.leaseEndDate);
    
    // 设置新租期开始日期（当前租约结束日期的第二天）
    const newStartDate = new Date(currentEndDate);
    newStartDate.setDate(newStartDate.getDate() + 1);
    
    // 设置新租期结束日期
    const newEndDate = new Date(newStartDate);
    newEndDate.setFullYear(newEndDate.getFullYear() + parseInt(renewalPeriodIndex) + 1);
    newEndDate.setDate(newEndDate.getDate() - 1);
    
    // 格式化日期
    const formatDate = (date) => {
      const year = date.getFullYear();
      const month = (date.getMonth() + 1).toString().padStart(2, '0');
      const day = date.getDate().toString().padStart(2, '0');
      return `${year}-${month}-${day}`;
    };
    
    this.setData({
      newLeaseStartDate: formatDate(newStartDate),
      newLeaseEndDate: formatDate(newEndDate)
    });
  },

  /**
   * 计算新的租金
   */
  calculateNewRent() {
    const { contractDetail, renewalPeriodIndex } = this.data;
    
    // 根据续约年限计算租金调整率（模拟数据）
    const adjustmentRates = [5, 8, 10]; // 1年、2年、3年的租金上调率
    const adjustmentRate = adjustmentRates[renewalPeriodIndex];
    
    // 计算新的月租金
    const newRentAmount = Math.round(contractDetail.actualRentAmount * (1 + adjustmentRate / 100));
    
    this.setData({
      newRentAmount: newRentAmount,
      rentChangeRate: adjustmentRate
    });
  },

  /**
   * 续约期限选择变化
   */
  bindRenewalPeriodChange(e) {
    this.setData({
      renewalPeriodIndex: e.detail.value
    });
    
    // 重新计算租期和租金
    this.calculateNewLeasePeriod();
    this.calculateNewRent();
  },

  /**
   * 付款周期选择变化
   */
  bindPaymentCycleChange(e) {
    this.setData({
      paymentCycleIndex: e.detail.value
    });
  },

  /**
   * 备注信息输入
   */
  inputRemark(e) {
    this.setData({
      remark: e.detail.value
    });
  },

  /**
   * 取消续约
   */
  cancelRenewal() {
    wx.navigateBack();
  },

  /**
   * 提交续约申请
   */
  submitRenewal() {
    const { 
      contractDetail, 
      renewalPeriods, 
      renewalPeriodIndex,
      paymentCycles,
      paymentCycleIndex,
      newLeaseStartDate,
      newLeaseEndDate,
      newRentAmount,
      remark
    } = this.data;
    
    // 构建提交数据
    const renewalData = {
      contractId: contractDetail.id,
      renewalPeriod: renewalPeriods[renewalPeriodIndex],
      paymentCycle: paymentCycles[paymentCycleIndex],
      newLeaseStartDate: newLeaseStartDate,
      newLeaseEndDate: newLeaseEndDate,
      newRentAmount: newRentAmount,
      remark: remark
    };
    
    // 这里应该是调用API提交续约申请
    console.log('提交续约申请数据:', renewalData);
    
    // 模拟提交成功
    wx.showLoading({
      title: '提交中...',
    });
    
    setTimeout(() => {
      wx.hideLoading();
      
      wx.showToast({
        title: '申请提交成功',
        icon: 'success',
        duration: 2000,
        success: () => {
          // 延迟返回上一页
          setTimeout(() => {
            wx.navigateBack();
          }, 2000);
        }
      });
    }, 1500);
  }
})